<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>进制转化</title>
</head>


<body>
    <ul>二进制转十进制 4位的话：8421法，从左到右</ul>
    <li>1 2 3 4 5 6 7 8 9</li>
    <li>0001 ： 1</li>
    <li>0010 ： 2</li>
    <li>0011 ： 2+1=3</li>
    <li>0100 ： 4</li>
    <li>0101 ： 4+1=5</li>
    <li>0110 ： 4+2=6</li>
    <li>0111 ： 4+2+1=7</li>
    <li>1000 ： 8</li>
    <li>1001 ： 8+1=9</li>
    <li>8位：0001 0010： 2¹ + 2^4 = 2+16=18</li>
    <ul>练习：</ul>
    <li>4位(从左到右)：1101=8+4+0+1=13</li>
    <li>8位(从右到左）：0101 1010=2^1+2^3+2^4+2^6=2+8+16+64=90</li>
    <li>写二进制最好是8位：一个字节是8bit</li>


    <ul>8进制转十进制（从右向左）</ul>
    <li>8^0*0位 + 8^1*1位 + 8^2*2位 + 。。。。</li>
    <li>1217:8^0*7 + 8^1*1 + 8^2*2 + 8^3*1= 7+8+128+512=655</li>

    <ul>16进制转十进制（从右向左）</ul>
    <li>16^0*0位 + 16^1*1位 + 16^2*2位 + 。。。。</li>

    <ul>X进制转十进制（从右向左）</ul>
    <li>X^0*0位 + X^1*1位 + X^2*2位 + 。。。。</li>
    <p>========================================================</p>
    <ul>10进制转2进制（除2取余，余数自下至上顺序写出）</ul>
    <ul>8进制转2进制（将8进制1位拆分2进制的3位）</ul>
    <ul>16进制转2进制（将16进制1位拆分2进制的4位）</ul>
    <p>=======================================================</p>
    <p>2进制表示正负数：0-正 1-负</p>
    <p>正数的原码、反码、补码是一样的</p>
    <p>原码：0 111 反码： 0111 补码：0 111</p>
    <p>负数的原码、反码(符号位不变，原码其他位取反)、补码(符合位不变，反码+1)</p>
    <ul>练习-1111的反码和补码：</ul>
    <li>反码： 1 000</li>
    <li>补码： 1 001</li>
    <ul>练习-1011 1010的反码和补码：</ul>
    <li>反码： 1 100 0101</li>
    <li>补码： 1 100 0110</li>
    <ul>练习-负0 1000 0000的反码和补码：</ul>
    <li>反码： 1 111 1111</li>
    <li>补码：1 0000 0000 因为溢出了就舍弃了1，所以变为了：0000 0000 </li>
    <p>出现原码和反码、补码的原因：5+ -2</p>
    <p>5 = 0101 -2= 1010, 5 + -2=1111=-7,显然用原码去做加法会出现问题</p>
    <p>所以不管正负数，都用补码表示：</p>
    <p>5 = 0101 -2= 1110, 5 + -2=0011(溢出舍1) = +3,</p>



</body>

</html>